package utils

import (
	"context"
	"reflect"
)

func GetCompanyCode(ctx context.Context, employeeNo string) (code string, err error) {
	// org := entity.Organization{}
	// err = dao.Organization.Ctx(ctx).Where(dao.Organization.Columns().Id, orgId).Scan(&org)
	// if err != nil {
	// 	return "", gerror.NewCode(gcode.WithCode(consts.QueryOrganizationFailed, orgId))
	// }
	// if org.Type == 1 || org.Type == 2 {
	// 	return org.Code, nil
	// }
	// // 如果本身不是公司,则向上追溯直到查到公司
	// return GetCompanyCode(ctx, org.Parent)

	return "", nil
}

// CopyStruc src 为struct, dst为struct指针
func CopyStruc(src interface{}, dst interface{}) {
	// 获取反射值
	srcVal := reflect.ValueOf(src)
	dstVal := reflect.ValueOf(dst).Elem()

	for i := 0; i < srcVal.NumField(); i++ {
		srcField := srcVal.Type().Field(i)
		if srcField.Anonymous {
			continue
		}
		srcFieldName := srcField.Name
		srcFieldVal := srcVal.Field(i)
		srcZeroVal := reflect.Zero(srcField.Type)
		// 当前属性不为0值才赋值
		if !reflect.DeepEqual(srcFieldVal.Interface(), srcZeroVal.Interface()) {
			dstField := dstVal.FieldByName(srcFieldName)
			if dstField.IsValid() && dstField.CanSet() {
				dstField.Set(srcFieldVal)
			}
		}
	}

}
